package com.zynote.nfhoujie.service;

import java.util.List;
import java.util.Map;
import com.zynote.nfhoujie.model.User;
import com.zynote.nfhoujie.model.UserInfo;

/**
 * 
 * @className:IUserService.java
 * @classDescription:用户服务层接口
 * @author: AIDAN SU
 * @createTime: 2012-10-13
 *
 */

public interface IUserService {
	
	/**
	 * 根据ID查找用户
	 * @param id 用户ID
	 * @return 用户
	 */
	User findUserById( Long id ) ;
	
	/**
	 * 创建用户
	 * @param user 用户基本信息
	 */
	Long createUser( User user );
	
	/**
	 * 创建用户与用户附加信息
	 * @param user 用户基本信息
	 * @param userInfo 用户附加信息
	 * @return 用户ID
	 */
	Long createUserAndUserInfo( User user ,UserInfo userInfo );
	
	/**
	 * 更新用户
	 * @param user 用户
	 */
	void updateUser( User user );
	
	/**
	 * 删除用户
	 * @param user 用户
	 */
	void deleteUser( User user );
	/**
	 * 根据ID删除用户
	 * @param id 用户ID
	 */
	void deleteUserById( Long id );
	
	/**
	 * 根据用户名获取用户
	 * @param username 用户名
	 * @return 用户
	 */
	User findUserByUsername( String username ) ;
	
	/**
	 * 根据用户名，密码，用户类型，获取用户
	 * @param username 用户名
	 * @param password 密码
	 * @param userType 用户类型 ：0表示所有用户，1表示管理员，2表示普通用户
	 * @return 用户
	 */
	User findUserByUsernameAndPassword( String username , String password , int userType );
	
	
	/**
	 * 统计用户数
	 * 
	 * @param params http请求参数
	 * @return 用户数
	 */
	int countUsers(  Map<String,String[]> params ) ;
	
	/**
	 * 获取用户列表分页
	 * @param startPosition 开始位置
	 * @param pageSize 每页的记录大小
	 * @param params http请求参数
	 * @return 用户列表
	 */
	List<User> listUsers( int startPosition, int pageSize, Map<String,String[]> params ) ;


}
